"""
输入m和n，计算组合数C(m,n)的值

"""
# from math import factorial as f
#
# m = int(input('m = '))
# n = int(input('n = '))
# print(f(m) // f(n) // f(m - n))
"""判断三条边的长度能否构成三角形"""
# def make_judgement(a, b, c):
#     return a + b > c and a + c > b and b + c > a
# print(make_judgement(1, 4, 3))  # False
# print(make_judgement(4, 5, 6))  # True
# # 如果不想按照从左到右的顺序依次给出a、b、c 三个参数的值，也可以使用关键字参数，通过“参数名=参数值”的形式为函数传入参数，如下所示。
# print(make_judgement(b=2, c=3, a=1))  # False
# print(make_judgement(c=6, b=4, a=5))  # True
# def make_judgements(*,a, b, c):
#     return a + b > c and a + c > b and b + c > a
# # print(make_judgements(2, 3, 4))
# def add(a=0, b=0, c=0):
#     """三个数相加求和"""
#     return a + b + c
#
#
# # 调用add函数，没有传入参数，那么a、b、c都使用默认值0
# print(add())         # 0
# # 调用add函数，传入一个参数，该参数赋值给变量a, 变量b和c使用默认值0
# print(add(1))        # 1
# # 调用add函数，传入两个参数，分别赋值给变量a和b，变量c使用默认值0
# print(add(1, 2))     # 3
# # 调用add函数，传入三个参数，分别赋值给a、b、c三个变量
# print(add(1, 2, 3))  # 6
def add(*args):
    total = 0
    for i in args:
        if type(i) in (int, float):
            total += i
    return total
print(add())         # 0
print(add(1))        # 1
print(add(1, 2, 3))  # 6
print(add(1, 2, 'hello', 3.45, 6))  # 12.45
def foo(*args, **kwargs):
    print(args)
    print(kwargs)


foo(3, 2.1, True, name='骆昊', age=43, gpa=4.95)


def foo():
    print('hello, world!')


def foo():
    print('goodbye, world!')


foo()  # 大家猜猜调用foo函数会输出什么
import module1
import module2
# 用“模块名.函数名”的方式（完全限定名）调用函数，
module1.foo()  # hello, world!
module2.foo()  # goodbye, world!

# 定义一个万能参数的函数
def fun(*arg,**kwargs):
    pass # 空的函数体
fun(1, 2, 3, name = 1)
